using System;
using System.Collections.Generic;
using System.Text;
using System.IO;

namespace SistemaLib.sipe.util.io
{
    public class EscribidorDeStrings
    {
		char _separador = ';'; // separador por defecto
		StringBuilder _cadena = new StringBuilder();
		int _linea_actual = 0;
		bool imprimir_serapador = false;
		bool _escapear_enter = false;

		public char Separador
		{
			get
			{ return _separador;}
			set
			{ _separador = value;}
		}

		public int LineaActual
		{
			get
			{ return _linea_actual;}
			set
			{ _linea_actual = value;}
		}

		public bool EscapearEnter
		{
			set
			{ _escapear_enter = value; }
		}

        public override string ToString()
        {
            return _cadena.ToString();
        }

		public void ImprimirColumna( string texto)
		{
			if ( _escapear_enter )
			{
				texto = texto.Replace( "\n", "");
				texto = texto.Replace( Convert.ToChar(10).ToString(), "");
				texto = texto.Replace( Convert.ToChar(13).ToString(), "");
			}

			if ( imprimir_serapador )
			{
				_cadena.Append( _separador + texto);
			}
			else
			{
                _cadena.Append(texto);
			}
			imprimir_serapador = true;
		}

		public void ImprimirColumna( int numero)
		{
			ImprimirColumna( numero.ToString());
		}

		public void ImprimirColumna( DateTime fecha)
		{
			ImprimirColumna( util.Func.FechaToCadena( fecha));
		}

		public void ImprimirColumna( decimal numero)
		{
			ImprimirColumna( util.Func.DecimalToCadena( numero));
		}

		public void ImprimirColumnas( string[] textos)
		{
			for( int i = 0; i < textos.Length; i++)
			{
				ImprimirColumna( textos[i]);
			}
		}

		public void ImprimirFinLinea()
		{
			_cadena.Append( System.Environment.NewLine);
			imprimir_serapador = false;
		}

    }
}
